package model

import (
	"github.com/gin-gonic/gin"
	"my_server_test/systemcode"
	"fmt"
)

// Data ...
type Data struct {
	Code   int    `json:"code,string"`
	Msg    string `json:"msg"`
	ErrMsg string `json:"err_msg"`

	Data     map[string]interface{} `json:"data"`
	HideData map[string]interface{} `json:"-"`
}

// NewData 新建
func NewData(c *gin.Context) *Data {

	m := &Data{}
	m.Data = make(map[string]interface{})
	m.HideData = make(map[string]interface{})

	m.Code = systemcode.SUCCESS
	m.GetErrMsg(m.Code)
	return m
}
// GetData ....
func GetData(c *gin.Context) *Data {
	d, _ := c.Get("data")
	data, _ := d.(*Data)
	if data == nil {
		data = NewData(c)
	}
	return data
}

// GetErrMsg 转换
func (d *Data) GetErrMsg(errCode int, errs ...error) {
	var err = fmt.Errorf("no msg")

	if len(errs) > 0 {
		err = errs[0]
	}
	d.Code = errCode

	if s, ok := systemcode.RetCode[errCode]; !ok {
		// d.Code = errc
		d.Msg = err.Error()
		d.ErrMsg = err.Error()
		//   d.Msg = "没有找到当前错误码的信息"
		// Log.Errorf("没有找到当前错误码的信息 code:%d", errCode)
	} else {
		d.Msg = s
		if err != nil {
			d.ErrMsg = err.Error()
		}

	}

	return
}